package com.px.project.module.ht.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.px.common.dto.BaseQueryDto;
import com.px.project.module.ht.dto.ScheduleCommandDto;
import com.px.project.module.ht.entity.ScheduleCommand;
import com.px.project.module.ht.dto.ScheduleCommandQueryDto;
import com.px.project.module.ht.vo.ScheduleCommandVo;

import java.util.List;

/**
 * 调度命令 服务类
 *
 * @author 品讯科技
 * @since 2023-10-08
 */
public interface ScheduleCommandService extends IService<ScheduleCommand> {

    /**
     * 通过 ID 获取
     *
     * @param id 编号
     * @return {@link ScheduleCommandDto }
     * @author 品讯科技
     * @date 2024-08
     */
    ScheduleCommandDto getById(Long id);

    /**
     * 分页查询调度命令
     *
     * @param pageVo  分页vo
     * @param queryVo 查询 VO
     * @return {@link Page }<{@link ScheduleCommandVo }>
     * @author 品讯科技
     * @date 2024-08
     */
    Page<ScheduleCommandVo> page(BaseQueryDto<ScheduleCommandVo> pageVo, ScheduleCommandQueryDto queryVo);

    /**
     * 救
     *
     * @param dto 迪托
     * @return boolean
     * @author 品讯科技
     * @date 2024-08
     */
    boolean save(ScheduleCommandDto dto);

    /**
     * 更新
     *
     * @param dto 迪托
     * @return boolean
     * @author 品讯科技
     * @date 2024-08
     */
    boolean update(ScheduleCommandDto dto);

    /**
     * 删除
     *
     * @param idList 标识列表
     * @return boolean
     * @author 品讯科技
     * @date 2024-08
     */
    boolean delete(List<Long> idList);

    /**
     * 获取命令编号
     *
     * @return {@link String }
     * @author 品讯科技
     * @date 2024-08
     */
    String getCommandNum();

    /**
     * 发送命令
     *
     * @param dto 迪托
     * @return boolean
     * @author 品讯科技
     * @date 2024-08
     */
    boolean sendCommand(ScheduleCommandDto dto);

    /**
     * 发送命令任务
     *
     * @author 品讯科技
     * @date 2024-08
     */
    void sendCommandTask();
}
